/*
 *  Copyright (C) 2010 glauco
 * 
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 * 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 * 
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.balisunrise.annotation;

/**
 * Tipos de eventos para VisualEntity e componentes.
 *
 * @author glauco
 */
public enum EventType {

    /**
     * Evendo disparado por uma representação visual (VisualAction).
     */
    VISUAL,

    /**
     * Evento disparado por uma representação visual (VisualAction), pertencente
     * a uma Transaction (TransactionActions).
     * Não são tratadas exceções.
     * Utilizavel em VisualAction.
     */
    VISUAL_TRANSACTION,

    /**
     * Evento disparado por uma representação visual (VisualAction), pertencente
     * a um Editor (EntityActions).
     * Não são tratadas exceções.
     * Utilizavel em VisualAction.
     */
    VISUAL_EDITOR,

    /**
     * Evento disparado por uma representação visual (VisualAction), pertencente
     * a um Search (EntityActions).
     * Não são tratadas exceções.
     * Utilizavel em VisualAction.
     */
    VISUAL_SEARCH,

    /**
     * Evento disparado pela representação visual associada a um campo de uma
     * entidade.
     * Deve receber uma propriedade, a qual é o nome do atributo da entidade que
     * a componente representa.
     * Não são tratadas exceções.
     * Utilizavel em VisualAction.
     * Gera um FieldAction.
     */
    VISUAL_FIELD,

    
    /**
     * Evento disparado antes de validar os dados da entidade por uma 
     * Transaction.
     * O Método pode lançar uma exceção RuntimeException que não seja
     * NullPointException. Estas exceções serão tratadas como erro e será
     * mostrada uma mensagem no Messenger.
     */
    TRANSACTION_BEFORE_VALIDATE,
    /**
     * Evento disparado antes de salvar os dados da Transaction.
     * Não há parâmetros para o método.
     * O Método pode lançar uma exceção RuntimeException que não seja
     * NullPointException. Estas exceções serão tratadas como erro e será
     * mostrada uma mensagem no Messenger.
     */
    TRANSACTION_BEFORE_SAVE,
    /**
     * Evento disparado após salvar os dados da Transaction.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    TRANSACTION_AFTER_SAVE,
    /**
     * Evento dispara antes de excluir um registro durante a Transaction.
     * Não há parâmetros para o método.
     * O Método pode lançar uma exceção RuntimeException que não seja
     * NullPointException. Estas exceções serão tratadas como erro e será
     * mostrada uma mensagem no Messenger.
     */
    TRANSACTION_BEFORE_DELETE,
    /**
     * Evento disparado após excluir um registro durante a Transaction.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    TRANSACTION_AFTER_DELETE,
    /**
     * Evento disparado após o Modo da Transaction ser alterado.
     * Este método pode receber por parâmetro o novo Modo da Transaction.
     * Este método pode receber o antigo Modo da Transaction e o novo Modo da
     * Transaction.
     * Este método pode não receber parâmentos.
     * Não são tratadas exceções.
     */
    TRANSACTION_MODE_CHANGED,


    /**
     * Evento disparado antes de executar a ação de confirmação de um
     * EntityAction.
     * Não há parâmetros para o método.
     * O Método pode lançar uma exceção RuntimeException que não seja
     * NullPointException. Estas exceções serão tratadas como erro e será
     * mostrada uma mensagem no Messenger.
     */
    ENTITY_ACTION_BEFORE_CONFIRM,
    /**
     * Evento disparado depois de executar a ação de confirmação de um
     * EntityAction.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    ENTITY_ACTION_BEFORE_CANCEL,

    /**
     * Evento disparado depois de executar a ação de vinculo entre a entidade
     * e os componentes (representações visuais).
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    PANEL_AFTER_BIND,
    /**
     * Evento disparado depois de executar a ação de desvincular a entidade e os
     * componentes (representações visuais).
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    PANEL_AFTER_UNBIND,

    /**
     * Evento disparado antes de executar a ação de carregar.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    ENTITY_FILTER_BEFORE_LOAD,
    /**
     * Evento disparado de antes de executar a ação de iteração.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    ENTITY_FILTER_BEFORE_ITERATE,
    /**
     * Evento disparado depois de carregar entidades, tanto do LOAD quanto do
     * ITERATE.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    ENTITY_FILTER_AFTER_LOAD,

    /**
     * Evento disparado ao trocar a seleção de linha do grid.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    GRID_LINE_SELECTED,
    /**
     * Evento disparado ao selecionar a ultima linha do grid.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    GRID_LAST_LINE_SELECTED,
    /**
     * Evento disparado ao trocar a seleção de uma coluna do grid.
     * Pode receber uma propriedade, a qual é o nome do atributo da entidade que
     * a coluna representa.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    GRID_COLUMN_SELECTED,
    /**
     * Evento disparado ao selecionar a ultima coluna do grid.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    GRID_LAST_COLUMN_SELECTED,
    /**
     * Evento disparado ao selecionar a ultima coluna editavel do grid.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    GRID_LAST_EDITABLE_COLUMN_SELECTED,

    /**
     * Evento de validação do valor a ser atribuido à entidade.
     * Deve receber uma propriedade, a qual é o nome do atributo da entidade que
     * a componente representa.
     * Este evento recebe um parametro do tipo Object, o qual é o valor
     * atribuido. Este valor recebido por parametro deve ser validado.
     * O Método pode lançar uma exceção RuntimeException que não seja
     * NullPointException. Estas exceções serão tratadas como erro e será
     * mostrada uma mensagem no Messenger.
     */
    FIELD_VALIDATION,
    /**
     * Evento disparado ao sincronizar o valor da entidade com o componente
     * (representação visual).
     * Pode receber uma propriedade, a qual é o nome do atributo da entidade que
     * a componente representa.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    FIELD_SYNC,
    /**
     * Evento disparado quando um componente (representação visual) recebe o
     * focus.
     * Pode receber uma propriedade, a qual é o nome do atributo da entidade que
     * a componente representa.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    FIELD_GOT_FOCUS,
    /**
     * Evento disparado quando um componente (representação visual) perde o
     * focus.
     * Pode receber uma propriedade, a qual é o nome do atributo da entidade que
     * a componente representa.
     * Não há parâmetros para o método.
     * Não são tratadas exceções.
     */
    FIELD_LOST_FOCUS,
    /**
     * Evento disparado na troca de focus, quando o focus passa pelo componente
     * (representação visual).
     * Deve receber uma propriedade, a qual é o nome do atributo da entidade que
     * a componente representa.
     * Não há parâmetros para o método.
     * O Método pode lançar uma exceção RuntimeException que não seja
     * NullPointException. Estas exceções serão tratadas como erro e será
     * mostrada uma mensagem no Messenger.
     */
    FIELD_FOCUS_TRAVEL,
}
